/*******************************************************************************************
 *  FireRef.c
 *
 *  Creating and managing Fire object strucutres.
 *
 *******************************************************************************************/







/*******************************************************************************************
 *  INCLUDES :
 *******************************************************************************************/

/* System and library related : */
#include <stdlib.h>
#include <string.h>

/* Project related : */
#include "FireRef.h"







/*******************************************************************************************
 *  FUNCTIONS :
 *******************************************************************************************/

/*******************************************************************************************
 *  NEWFIREREF : Creates an empty FireRef object structure.
 *******************************************************************************************/
FireRef *newFireRef(void) {
	FireRef *f;

	/* Creating the container structure : */
	f = (FireRef *)malloc(sizeof(FireRef));


	/* Setting the object's type : */
	f->otype = fireRef;


	/* For now, the FireRef has no parameters, so : */
	f->paramsNum = 0;
	

	/* Returning the still empty structure : */
	return f;

}




/*******************************************************************************************
 *  FREEFIREREF : destroys a FireRef object structure and all the objects it stores.
 *******************************************************************************************/
void freeFireRef(FireRef *f) {

	int i;							/* All purpose counter.                 */

	free(f->label);					/* Free the label char chain.           */

	for(i=0; i<f->paramsNum; i++)
		free(f->params[i]);			/* Free all the parameters char chains. */

	free(f);						/* Free the object itself.              */

}



/*******************************************************************************************
 *  SETFIREREFLABEL : sets an fire label.
 *******************************************************************************************/
void setFireRefLabel(FireRef *f, char *l) {
	
	if(l != NULL){
		f->label = malloc(MAX_LABEL_LENGTH);
		strcpy(f->label, l);
	}
	else
		f->label = NULL;

}



/*******************************************************************************************
 *  PUSHFIREREFPARAM : pushes a new parameter on the fireRef's parameters list :
 *******************************************************************************************/
void pushFireRefParam(FireRef *f, char *p) {
	strcpy(f->params[f->paramsNum], p);
	f->paramsNum++;
}
